package com.cai;

import java.util.Arrays;
import java.util.List;
import java.util.stream.IntStream;
import java.util.stream.Stream;

/**
 * @Title: ${NAME}
 * @Author RuoLi
 * @Package com.cai
 * @Date 2024/1/28 19:47
 * @description: ${description}
 */
public class Main {
    private static List<Integer> list = Arrays.asList(1, 4, 2, 3);
    private static int[] nums = {1, 5, 3};

    public static void main(String[] args) {
        functionToStream();
    }


    public static void listToStream() {
        //创建顺序流
        Stream<Integer> stream = list.stream();

        //创建并行流
        Stream<Integer> integerStream = list.parallelStream();
    }

    public static void arrayToStream() {
        //通过数组创建stream
        IntStream intStream = Arrays.stream(nums);
    }

    /**
     * @description: iterate方法接受两个参数，第一个为初始化值，第二个为进行的函数操作，因为iterator生成的流为无限流，通过limit方法对流进行了截断，只生成5个偶数
     * @description: generate方法接受一个参数，方法参数类型为Supplier ，由它为流提供值。generate生成的流也是无限流，因此通过limit对流进行了截断
     */
    public static void functionToStream() {
        Stream<Integer> stream = Stream.iterate(0, n -> n + 2).limit(5);
        stream.forEach(System.out::print);//打印出0,2,4,6,8

        Stream<Integer> stream1 = Stream.generate(() -> 1).limit(5);
        stream1.forEach(System.out::print);//打印出11111
    }
}
